/* 4.2 О восьми ферзях */

#include <stdio.h>

#define pos(x,y) ((x)*(n)+(y))

int a[400] = {0};
int k = 0, n = 0;

int line(int l);

int main()
{
	int i, k = 0;
	scanf("%d", &n);
	for (i = 0; i < n; i++)
	{
		a[pos(0,i)] = 1;
		k += line(1);
		a[pos(0,i)] = 0;
	} 	
	printf("%d\n", k);
	return 0;
}

int line(int l)
{
	int i, j, k = 0;
	if (l == n) 
	{
		for (i = 0; i < n; i++) 
		{
			for (j = 0; j < n; j++)
				printf("%d ", a[pos(i,j)]);
			printf("\n");
		}
		printf("\n");
		return 1;
	}
	for (i = 0; i < n; i++)
	{
		int b = 1;
		for (j = 1; j < n; j++)
			if (l-j >= 0) 
			{
				if (a[pos(l-j,i)]) { b = 0; break; }
				if (i-j >= 0)
					if (a[pos(l-j, i-j)]) { b = 0; break; } 
				if (i+j < n) 
					if (a[pos(l-j, i+j)]) { b = 0; break; }
			}
		if (b)
		{
			a[pos(l,i)] = 1;
			k += line(l+1);
			a[pos(l,i)] = 0;
		}
	}
	return k;
}
